package com.system.patient.service.impl;

import com.system.patient.bean.Patient;
import com.system.patient.repository.PatientRepository;
import com.system.patient.service.PatientService;
import com.system.patient.vo.PatientVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @className: PatientServiceImpl
 * @description: TODO 类描述
 * @author: Li Chuanwei
 * @date: 2023/11/12 15:40
 * @Company: Copyright [日期] by [作者或个人]
 **/

@Service
public class PatientServiceImpl implements PatientService {

    @Autowired
    private PatientRepository patientRepository;
    @Override
    public boolean savePatient(Patient patient) {
        Patient obj = patientRepository.save(patient);
        if(obj != null){
            return true;
        }
        return false;
    }

    @Override
    public boolean removePatientById(int id) {
        if (patientRepository.existsById(id)) {
            patientRepository.deleteById(id);
            return true;
        }
        return false;
    }

    @Override
    public boolean modifyPatient(Patient patient) {
        Patient obj = patientRepository.save(patient);
        if(obj != null){
            return true;
        }
        return false;
    }

    @Override
    public Patient getPatientById(int id) {
        if (patientRepository.existsById(id)) {
            return patientRepository.getReferenceById(id);
        }
        return null;
    }

    @Override
    public List<Patient> listAllPatients() {
        return patientRepository.findAll();
    }

    @Override
    public List<Patient> getPatientsByLoginId(Integer loginId) {
        return patientRepository.findAllByLoginId(loginId);
    }

    @Override
    public String getPatientName(int id) {
        if (patientRepository.existsById(id)) {
            return patientRepository.getReferenceById(id).getPName();
        }
        return null;
    }

    @Override
    public PatientVo findByIdCardNumber(String idCardNumber) {
        Patient patient = patientRepository.findByIdCardNumber(idCardNumber);
        if (patient != null) {
            PatientVo patientVo = new PatientVo();
            patientVo.setPatientId(patient.getPatientId());
            patientVo.setPName(patient.getPName());
            return patientVo;
        }
        return null;
    }
}
